package com.uls.ycl.domain;

import java.util.Date;
import java.util.List;
import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.uls.ycl.vo.TaskCommentVo;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.uls.common.annotation.Excel;
import com.uls.common.core.domain.BaseEntity;

/**
 * 报修项目对象 ycl_repair_item
 * 
 * @author ycl
 * @date 2024-11-18
 */
public class RepairItem extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目ID */
    private Long itemId;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String name;

    /** 项目描述 */
    @Excel(name = "项目描述")
    private String description;

    /** 项目类别 */
    @Excel(name = "项目类别")
    private String category;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date createdAt;

    /** 报修请求ID */
    @Excel(name = "报修请求ID")
    private Long requestId;

    /** 材料ID */
    @Excel(name = "材料ID")
    private Long materialId;

    /** 数量 */
    @Excel(name = "数量")
    private Long total;

    /** 实例id */
    @Excel(name = "实例id")
    private Long flowInstantId;

    /** 状态（0-未提交，1-打回，2-审核中，3-已完成 */
    @Excel(name = "状态", readConverterExp = "状态（0-未提交，1-打回，2-审核中，3-已完成")
    private Long status;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date updateAt;

    /** 创建人 */
    @Excel(name = "创建人")
    private String userName;

    //
    @Excel(name = "材料名称")
    private String Mname;


    //
        //是否同意vo
    private Integer agree;
        //批注vo
    private String comment;
        //审批过程数据列表vo
    private List<TaskCommentVo> taskCommentVoList;

    public List<TaskCommentVo> getTaskCommentVoList() {
        return taskCommentVoList;
    }

    public void setTaskCommentVoList(List<TaskCommentVo> taskCommentVoList) {
        this.taskCommentVoList = taskCommentVoList;
    }

    public Integer getAgree() {
        return agree;
    }

    public void setAgree(Integer agree) {
        this.agree = agree;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public String getMname() {
        return Mname;
    }

    public void setMname(String mname) {
        Mname = mname;
    }

    public void setItemId(Long itemId)
    {
        this.itemId = itemId;
    }

    public Long getItemId() 
    {
        return itemId;
    }
    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public void setCreatedAt(Date createdAt)
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setRequestId(Long requestId) 
    {
        this.requestId = requestId;
    }

    public Long getRequestId() 
    {
        return requestId;
    }
    public void setMaterialId(Long materialId) 
    {
        this.materialId = materialId;
    }

    public Long getMaterialId() 
    {
        return materialId;
    }
    public void setTotal(Long total) 
    {
        this.total = total;
    }

    public Long getTotal() 
    {
        return total;
    }
    public void setFlowInstantId(Long flowInstantId) 
    {
        this.flowInstantId = flowInstantId;
    }

    public Long getFlowInstantId() 
    {
        return flowInstantId;
    }
    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }
    public void setUpdateAt(Date updateAt) 
    {
        this.updateAt = updateAt;
    }

    public Date getUpdateAt() 
    {
        return updateAt;
    }
    public void setUserName(String userName) 
    {
        this.userName = userName;
    }

    public String getUserName() 
    {
        return userName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("itemId", getItemId())
            .append("name", getName())
            .append("description", getDescription())
            .append("category", getCategory())
            .append("createdAt", getCreatedAt())
            .append("requestId", getRequestId())
            .append("materialId", getMaterialId())
            .append("total", getTotal())
            .append("flowInstantId", getFlowInstantId())
            .append("status", getStatus())
            .append("updateAt", getUpdateAt())
            .append("userName", getUserName())
            .toString();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        RepairItem item = (RepairItem) o;
        return Objects.equals(itemId, item.itemId) && Objects.equals(name, item.name) && Objects.equals(description, item.description) && Objects.equals(category, item.category) && Objects.equals(createdAt, item.createdAt) && Objects.equals(requestId, item.requestId) && Objects.equals(materialId, item.materialId) && Objects.equals(total, item.total) && Objects.equals(flowInstantId, item.flowInstantId) && Objects.equals(status, item.status) && Objects.equals(updateAt, item.updateAt) && Objects.equals(userName, item.userName) && Objects.equals(Mname, item.Mname) && Objects.equals(agree, item.agree) && Objects.equals(comment, item.comment) && Objects.equals(taskCommentVoList, item.taskCommentVoList);
    }

    @Override
    public int hashCode() {
        return Objects.hash(itemId, name, description, category, createdAt, requestId, materialId, total, flowInstantId, status, updateAt, userName, Mname, agree, comment, taskCommentVoList);
    }
}
